﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using InnvoiceActual.Logica.GestorObject;
using InnvoiceActual.Logica.GestorDB;
using System.ComponentModel;

namespace InnvoiceActual.Ws.Empresa
{
    /// <summary>
    /// Lógica de interacción para EmpresaWS.xaml
    /// </summary>
    public partial class EmpresaWS : Window
    {

        public EmpresaCS miEmpresa;
        EmpresaDB empreDB = new EmpresaDB();


        public EmpresaWS(EmpresaCS auxEmpresa)
        {
            InitializeComponent();
            miEmpresa = auxEmpresa;
            miEmpresa.PropertyChanged += new PropertyChangedEventHandler(empresa_PropertyChanged);
            DataContext = miEmpresa;
            switch (miEmpresa.ExistenDatos)
            {
                case false:
                    //btnAceptar.Content = "[F2] Aceptar Datos";
                    break;
                case true:
                    
                    //btnAceptar.IsEnabled = false;
                    break;
            }
        }


        #region metodos


        private void empresa_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            btnAceptar.IsEnabled = miEmpresa.IsValid();
        }

        private void aceptar_datos()
        {
            try
            {
                switch (miEmpresa.ExistenDatos)
                {
                    case false:
                        miEmpresa.TipoDoc = Convert.ToByte(cbxTipoDocumento.SelectedValue);
                        miEmpresa.TipoContribuyente = Convert.ToByte(cbxTipoContrib.SelectedValue);
                        empreDB.addDatosEmpresa(miEmpresa);
                        break;
                    case true:
                        miEmpresa.TipoDoc = Convert.ToByte(cbxTipoDocumento.SelectedValue);
                        miEmpresa.TipoContribuyente = Convert.ToByte(cbxTipoContrib.SelectedValue);
                        empreDB.actualizarDatos(miEmpresa);
                        this.Close();
                        break;
                    default:
                        return;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error btnAceptar - WDatosEmpresa - L90", "Cuidado", MessageBoxButton.OK);
            }
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // se setea las categorias de DNI
            DniDB auxDni = new DniDB();
            cbxTipoDocumento.ItemsSource = auxDni.obtenerDescripDni();

            //se setea las categorias de Contribuyente
            TipoContribuyenteDB auxTipoContrib = new TipoContribuyenteDB();
            cbxTipoContrib.ItemsSource = auxTipoContrib.obtenerTipoContribucion();

            //setea los datos de la empresa del Dni y Contribuyente
            setearDatos();

            txtRazonSocial.Focus();
        }

        private void setearDatos()
        {
            cbxTipoDocumento.SelectedValue = miEmpresa.TipoDoc;
            cbxTipoContrib.SelectedValue = miEmpresa.TipoContribuyente;
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.Key.ToString().ToUpper())
            {
                case "F1":
                    break;
                case "F2":                    
                    if (btnAceptar.IsEnabled) aceptar_datos();
                    break;
                case "F3":
                    break;
                case "F4":
                    break;
                case "ESCAPE":
                    this.Close();
                    break;
                case "F12":
                    this.Close();
                    break;
                default:
                    return;
            }
        }


        private void Window_LocationChanged(object sender, EventArgs e)
        {
            this.WindowStartupLocation = WindowStartupLocation.CenterScreen;
        }

        private void btnAceptar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                switch (miEmpresa.ExistenDatos)
                {
                    case false:
                        miEmpresa.TipoDoc = Convert.ToByte(cbxTipoDocumento.SelectedValue);
                        miEmpresa.TipoContribuyente = Convert.ToByte(cbxTipoContrib.SelectedValue);
                        if (empreDB.addDatosEmpresa(miEmpresa))  this.Close();
                        break;
                    case true:
                        miEmpresa.TipoDoc = Convert.ToByte(cbxTipoDocumento.SelectedValue);
                        miEmpresa.TipoContribuyente = Convert.ToByte(cbxTipoContrib.SelectedValue);
                        if (empreDB.actualizarDatos(miEmpresa)) this.Close();
                        this.Close();
                        break;
                    default:
                        return;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error btnAceptar - WDatosEmpresa - L90", "Cuidado", MessageBoxButton.OK);
            }
        }

        #endregion metodos

        private void btnCancelar_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }


    }
}
